import { Warning, InfoFilled, SuccessFilled } from '@element-plus/icons-vue'
import type { TypeConfig, PresetConfig } from './types'

/**
 * 不同类型的样式配置
 */
export const typeConfigs: Record<string, TypeConfig> = {
  delete: {
    icon: Warning,
    iconColor: '#E6A23C',
    confirmType: 'danger',
    warningTip: '此操作不可恢复，请谨慎操作！'
  },
  warning: {
    icon: Warning,
    iconColor: '#E6A23C',
    confirmType: 'warning'
  },
  info: {
    icon: InfoFilled,
    iconColor: '#409EFF',
    confirmType: 'primary'
  },
  success: {
    icon: SuccessFilled,
    iconColor: '#67C23A',
    confirmType: 'success'
  }
}

/**
 * 预设的常用确认模板
 */
export const presets: Record<string, PresetConfig> = {
  // 删除确认模板
  deleteConfirm: {
    type: 'delete',
    title: '删除确认',
    confirmText: '确定删除',
    warningTip: '此操作不可恢复，请谨慎操作！'
  },

  // 保存确认模板
  saveConfirm: {
    type: 'info',
    title: '保存确认',
    content: '是否保存当前修改？',
    confirmText: '保存'
  },

  // 退出确认模板
  exitConfirm: {
    type: 'warning',
    title: '退出确认',
    content: '有未保存的修改，确定要退出吗？',
    confirmText: '退出',
    warningTip: '退出后修改将丢失'
  },

  // 重置确认模板
  resetConfirm: {
    type: 'warning',
    title: '重置确认',
    content: '确定要重置所有设置吗？',
    confirmText: '重置',
    warningTip: '重置后将恢复默认设置'
  },

  // 提交确认模板
  submitConfirm: {
    type: 'info',
    title: '提交确认',
    content: '确定要提交当前数据吗？',
    confirmText: '提交'
  },

  // 发布确认模板
  publishConfirm: {
    type: 'success',
    title: '发布确认',
    content: '确定要发布当前内容吗？',
    confirmText: '发布'
  }
}

/**
 * 获取预设配置
 * @param presetName 预设名称
 * @returns 预设配置对象
 */
export function getPreset(presetName: string): PresetConfig | undefined {
  return presets[presetName]
}

/**
 * 获取类型配置
 * @param type 对话框类型
 * @returns 类型配置对象
 */
export function getTypeConfig(type: string): TypeConfig | undefined {
  return typeConfigs[type]
}
